The present invention relates to electronic data processing, and more specifically concerns constructing persistent representations of the structure of multiple-component data objects for multimedia presentations and other applications.
One of the fastest growing areas of computer applications involves the presentation of complex multimedia information. Traditional vehicles for delivering multimedia, such as television and motion pictures, present their content as a single, fixed stream of information having no internal structure. That is, the presentation is structurally a single object, a single file of information, an indivisible unit of data having no separable parts. More recently, computer-mediated presentations of data were divided into individual parts, such as animated sequences of images and music made by combining individual sampled sounds. Today, multimedia presentations of many different kinds are actually complex structures of elemental data objects that are combined on the fly during playback according to a representation of the interrelationship of the content objects. That is, the structure of the individual parts of a presentation are no longer hardwired into the content itself, but form a separate entity that must be transmitted and/or stored along with the content in order to recreate the presentation.
At the same time that the internal form of conventional multimedia presentations is widening to include multiple data elements having an explicit structure that is recreated upon playback, the range of things encompassed by the term `presentation` is also becoming much more extensive. For the present purposes, therefore, this term must be taken in its widest possible sense. Presentations include performances, renditions, and realizations of all kinds of data. A movie is a presentation; a World Wide Web page is a presentation; the result of a query on a computer database can be considered a presentation. Other forms of presentation include slide shows authored in programs such as Microsoft PowerPoint, and animated diagrams in documents, on desktops, and in user interfaces such as menu bars.
Conventional authoring programs construct structured presentations from component objects that include standard methods for manipulating them. Such methods include animation routines, playback routines, and so forth. The methods may take the form of calls to an application program interface (API), which is a library defining predefined data types and individually callable functions. The functions may or may not have arguments, and may or may not return a result. They are frequently stored in a dynamic link library (.dll) in a personal computer or other digital processor.
Building a presentation from individual components requires a mechanism for specifying how the components interrelate and how they perform when the presentation is recreated during playback. This runtime structure of a presentation is a storage mechanism that a program uses to represent information in memory while the presentation is running. Runtime structures are generally created declaratively through an API designed individually for that specific structure. A program that uses an API to create a runtime structure calls functions to create data objects. These objects then become arguments to other function calls and so on, until the data structure is completely defined.
When the program creating the presentation is closed, some of the information representing the structure is written to a disk file. The long-term format of a runtime structure, from which the presentation can be recreated, is called a `persistent` representation. A program that later recreates the presentation for viewing, editing, or other uses requires some kind of persistent representation of the runtime structure.
The customary approach to persistent representations of runtime data structures involves writing out a stylized description of the structure. For example, if the data structure of a presentation resembles a hierarchy of objects each with one or more children, the file format typically describes each object as the information contained in it, followed by references to each of the object's children.
A significant problem with this approach occurs when a persistent representation is read back into a program for recreating the presentation. It is often a complex task to map the representation into a sequence of API calls that will build the data structure. That is, this type of representation describes the actual data structure itself adequately, but it does a poor job of describing how to build the structure. Conventional representations require time-consuming parsing and translation. The problem increases rapidly with increased complexity in the data structure; modem presentations tend to have greater and greater complexity.
A need therefore exists for an improved system of representing the structures of multimedia and similar multi-component presentations, and for methods of generating and using persistent representations with increased speed and with reduced computer memory and resources.